package com.supermarket.mapper;

import com.supermarket.entity.Favorites;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface FavoritesMapper {
    
    /**
     * 添加收藏
     * 
     * @param favorites 收藏对象
     * @return 影响的行数
     */
    int insert(Favorites favorites);
    
    /**
     * 删除收藏
     * 
     * @param id 收藏ID
     * @return 影响的行数
     */
    int deleteById(Integer id);
    
    /**
     * 根据用户ID和商品ID删除收藏
     * 
     * @param userId 用户ID
     * @param commodityId 商品ID
     * @return 影响的行数
     */
    int deleteByUserIdAndCommodityId(@Param("userId") Integer userId, @Param("commodityId") Integer commodityId);
    
    /**
     * 清空用户的所有收藏
     * 
     * @param userId 用户ID
     * @return 影响的行数
     */
    int deleteByUserId(Integer userId);
    
    /**
     * 查询用户是否已收藏某商品
     * 
     * @param userId 用户ID
     * @param commodityId 商品ID
     * @return 收藏对象，不存在则返回null
     */
    Favorites selectByUserIdAndCommodityId(@Param("userId") Integer userId, @Param("commodityId") Integer commodityId);
    
    /**
     * 查询用户的所有收藏，包含商品信息
     * 
     * @param userId 用户ID
     * @return 收藏列表
     */
    List<Favorites> selectByUserId(Integer userId);

}
